package com.zhuty.aiBioHelper.service;

import com.zhuty.aiBioHelper.enums.AiRoleType;
import dev.langchain4j.service.Result;
import reactor.core.publisher.Flux;

/**
 * AI服务基础接口
 * 定义所有AI角色服务的通用方法
 * 
 * @author zhuty
 */
public interface BaseAiService {
    
    /**
     * 获取当前服务支持的AI角色类型
     * 
     * @return AI角色类型
     */
    AiRoleType getSupportedRoleType();
    
    /**
     * 基础聊天功能
     * 
     * @param userMessage 用户消息
     * @return AI回复
     */
    String chat(String userMessage);
    
    /**
     * 带RAG检索增强的聊天功能
     * 
     * @param userMessage 用户消息
     * @return 包含检索内容的AI回复结果
     */
    Result<String> chatWithRag(String userMessage);
    
    /**
     * 流式聊天功能
     * 
     * @param memoryId 会话记忆ID
     * @param userMessage 用户消息
     * @return 流式AI回复
     */
    Flux<String> chatStream(int memoryId, String userMessage);
    
    /**
     * 检查服务是否可用
     * 
     * @return 是否可用
     */
    default boolean isAvailable() {
        return true;
    }
}